package com.example.tse.rbhttpservice.service.group;

import com.example.tse.rbhttpservice.service.group.model.GroupGetListRequest;
import com.example.tse.rbhttpservice.service.group.model.GroupGetListResponse;
import com.example.tse.rbhttpservice.service.group.model.GroupGetRequest;
import com.example.tse.rbhttpservice.service.group.model.GroupGetResponse;
import com.example.tse.rbhttpservice.service.group.model.GroupGetByCodeRequest;
import com.example.tse.rbhttpservice.service.group.model.GroupGetByCodeResponse;
import com.example.tse.rbhttpservice.service.group.model.GroupJoinRequest;
import com.example.tse.rbhttpservice.service.group.model.GroupJoinResponse;
import com.example.tse.rbhttpservice.service.group.model.GroupOpenRequest;
import com.example.tse.rbhttpservice.service.group.model.GroupOpenResponse;
import com.example.tse.rbhttpservice.service.group.model.GroupQuitRequest;
import com.example.tse.rbhttpservice.service.group.model.GroupQuitResponse;
import  com.example.tse.rbhttpservice.service.RemoteServiceListenerT;

/**
 *
 * @author wliu
 *  edit   tse
 */
public interface GroupService {
	/**
	 * 获取团购列表，仅获取开始中的团购数据，如果用户已参与某团，按钮“我要开团”变成“我已参团”
	 * @param request
	 * @param listener
	 * @return GroupGetListResponse
	 */
	  void getList(GroupGetListRequest request, RemoteServiceListenerT<GroupGetListResponse> listener);
		
	/**
	 * 获取团购详情，根据是否参团显示不同内容，已参团显示“分享”和“现在下单”，同时显示参团人数，未参团显示“我要参团”和“我要开团”，团购分享内容为团购名称＋团购副图＋固定文字＋固定链接（一个静态介绍页面）
	 * @param request
	 * @param listener
	 * @return GroupGetResponse
	 */
	  void get(GroupGetRequest request, RemoteServiceListenerT<GroupGetResponse> listener);
		
	/**
	 * 输入团购码获取团购信息，只有完全匹配的团购码才能获取到信息，无联想搜索功能
	 * @param request
	 * @param listener
	 * @return GroupGetByCodeResponse
	 */
	  void getByCode(GroupGetByCodeRequest request, RemoteServiceListenerT<GroupGetByCodeResponse> listener);
		
	/**
	 * 用户参加一个已经开的团，根据已经开团的id参加，返回开团的详细信息（同详情接口）
	 * @param request
	 * @param listener
	 * @return GroupJoinResponse
	 */
	  void join(GroupJoinRequest request, RemoteServiceListenerT<GroupJoinResponse> listener);
		
	/**
	 * 用户开通一个新团，返回开团详情（同详细接口）
	 * @param request
	 * @param listener
	 * @return GroupOpenResponse
	 */
	  void open(GroupOpenRequest request, RemoteServiceListenerT<GroupOpenResponse> listener);
		
	/**
	 * 用户已参加某团，可以退出，在参加同一个团多次只保留最后一个记录
	 * @param request
	 * @param listener
	 * @return GroupQuitResponse
	 */
	  void quit(GroupQuitRequest request, RemoteServiceListenerT<GroupQuitResponse> listener);
		
}
